package sf.database.template;

import sf.database.jdbc.sql.SQLContext;

import java.util.Map;

/**
 * 模板操作接口
 */
public interface TemplateHandler {
    void loadAllSQL();

    String getSQL(String sqlId);

    SQLContext getParsedSql(String sqlId, Map<String, Object> paramters);

    SQLContext getParsedPageSql(String sqlId, Map<String, Object> paramters);

    SQLContext getParsedPageSqlSource(String sqlId, Map<String, Object> paramters);

    /**
     * 根据sql模板内容渲染
     * @param sqlTemplate
     * @param paramters
     * @return
     */
    SQLContext getParsedSqlSource(String sqlTemplate, Map<String, Object> paramters);

    SQLContext getParsedPageCountSql(String sqlId, Map<String, Object> paramters);

    /**
     * 分页使用 查询总数
     * @param sqlTemplate
     * @param paramters
     * @return
     */
    SQLContext getParsedPageCountSqlSource(String sqlTemplate, Map<String, Object> paramters);

    SQLContext getParsedPageListSql(String sqlId, Map<String, Object> paramters);

    /**
     * 分页使用 查询列表
     * @param sqlTemplate
     * @param paramters
     * @return
     */
    SQLContext getParsedPageListSqlSource(String sqlTemplate, Map<String, Object> paramters);
}
